Virtually all data traffic on the Internet is organized according to a protocol stack, such as the Open Systems Interconnection (OSI) suite or the Internet Protocol Suite, also called TCP/IP (TCP and IP refer to two different protocols of the suite, Transmission Control Protocol and Internet Protocol.) Protocol stacks are implemented by computing devices that communicate on a network. Each protocol is a separately abstracted tool that performs a particular task in either transmitting or receiving network communications. For example, application layer processes send data to transport layer protocols. Transport layer protocols break the data into segments and direct the segments to a network layer protocol. The network layer protocol converts the segments into data packets and sends the data packets to a hardware layer, such as Ethernet, WiFi or other wireless Local Area Network (WLAN), cellular, etc., for transmission.
Some transport layer protocols, such as TCP also handle error checking and transmission verification. Recipient computing devices provide an acknowledgment or ACK message when a data packet is received. TCP monitors data packets sent and corresponding acknowledgements received. If the transport layer protocol does not receive an acknowledgement for a data packet within a retransmission time-out threshold or RTO, it causes that data packet to be retransmitted to the recipient.
The TCP protocol dynamically sets the time-out threshold based on historical delays in data packet transmission. The TCP protocol sets and resets the retransmission timeout based on different factors. For example, TCP measures the round-trip time or RTT for each data packet transmitted. The RTT is the time between the transmission of a data packet and the receipt of an acknowledgement indicating that the data packet was received. TCP increases the retransmission time-out threshold if RTT increases or if a data packet or data packets must be retransmitted (e.g., if an acknowledgement is not received before the expiration of the existing retransmission timeout threshold). This can prevent unneeded retransmissions.